<?php
class Usuario extends CI_Controller{
     
    public  function  __construct()
    {
        parent::__construct();
        $this->load->model('usuario_model');
        $this->load->model('cidade_model');
        $this->load->model('estado_model');
        $this->load->model('dica_model');
        
        $this->auth->check_logged($this->router->class , $this->router->method);
    }
    
    public function index()
    {
        $data['title']      = 'Hintweek :: Todos os Usuários';
        $data['heading']    = 'Todos os Usuários';
        $data['query']      = $this->usuario_model->get_all();
        $data['style']      = 'start';
        
        $this->load->view('usaurio/head_view', $data);
        $this->load->view('usuario/usuario_view', $data);
        $this->load->view('usaurio/footer', $data);
    }
    
    public function create()
    {
        // Form Validation //
        $this->load->library('form_validation');
        
        $this->form_validation->set_rules('username', 'Username', 'trim|required|callback_username_check|xss_clean');
        $this->form_validation->set_rules('senha', 'Senha', 'required|min_length[6]|matches[senhaconf]');
        $this->form_validation->set_rules('senhaconf', 'Confirmação de Senha', 'required');
        $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|callback_email_check');
        
        $this->form_validation->set_message('required', "%s Obrigatório.");
        $this->form_validation->set_message('valid_email', "%s Inválido.");
        $this->form_validation->set_message('matches', "Senhas não correpondem.");
        $this->form_validation->set_error_delimiters('<img src="'. base_url() . 'img/seta.png"/><p class="error">', '</p>');
        // Form Validation //

	if ($this->form_validation->run() == FALSE)
	{
            $data['title']  = 'Hintweek :: Login';
            $data['style']  = 'start';
            
            $this->load->view('head_view', $data);
            $this->load->view('start_page_view',$data);
            $this->load->view('footer_view');
	}
	else
	{            
                $idUsuario     = $this->usuario_model->create();
                
                $this->load->model('home_model');
                $this->home_model->usuario_has_metodos($idUsuario);// Permissao de acesso

                if(isset($dir)){$this->usuario_model->update_avatar($idUsuario, $dir);}
                
                $data['title']      =   'Hintweek :: Cadastrado com sucesso!';
                $data['heading']    =   'Parabéns';
                $data['mensagem']   =   'Seja bem vindo(a) ao HintWeek! Seu cadastro foi efetivado com sucesso. A partir de agora você pode criar, compartilhar e participar da comunidade com as dicas mais animadas e divertidas da internet.';
                $data['style']  = 'start';
            
                $this->load->view('head_view', $data);
                $this->load->view('start_cad_sucess_view',$data);
                $this->load->view('footer_view');
        }
    }
    
    public function editarPerfil()
    {
        $idUsuario = intval($this->session->userdata('idUsuario'));
        $novaSenha = $this->input->post('novasenha');
                
        //  Load form_help //
        $this->load->library('form_validation');
        
        $this->form_validation->set_rules('senha', 'Senha', 'required|callback_pass_validation_check');        
        $this->form_validation->set_rules('username', 'Username', 'trim|required|callback_username_edit_check|xss_clean');
        $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email|callback_email_edit_check');
        
        $this->form_validation->set_rules('novasenha', 'Senha', 'min_length[6]|matches[senhaconf]');
                
        $this->form_validation->set_message('required', "Digite seu %s");
        $this->form_validation->set_message('matches', "Senhas não correpondem");
        $this->form_validation->set_error_delimiters('<img src="http://localhost/hintweek/img/seta.png"/><p class="error">', '</p>');

	if ($this->form_validation->run() == FALSE)
	{
            $data['title']      = 'Hintweek :: Atualizar Usuário';
            $data['heading']    = 'Atualizar Cadastro de Usuário';
            
            $data['cidades']    = $this->cidade_model->get_all();
            $data['usuario']    = $this->usuario_model->get_by_id($idUsuario);

            $this->load->view('usuario/usuario_form_update_view', $data);
	}
	else
	{
            $this->usuario_model->update($idUsuario);
            $avatar = $_FILES['avatar']['name'];
                                
            if($avatar != '')// Verifica se Avatar foi selecionado
            {
                $data['upload'] = $this->usuario_model->do_upload();
                $dir = array('avatar' => $data['upload']['dir']);
            }
                                
            if(isset($data['upload']['error']))
            {
                $data['title']      =   'Hintweek :: Atualização com sucesso!';
                $data['heading']    =   'Dados de usuário alterados, porém houve um erro ao enviar seu avatar. Verifique o erro e tente novamente!';
                $data['mensagem']   =   'Seu usuário foi alterado com sucesso, porém houve um erro ao enviar seu avatar. Verifique o erro abaixo e envie novamente no menu ' . anchor('usuario/editarPerfil', 'Editar Perfil') . '  .';
                $data['erro']       =   TRUE;
                                        
                $this->load->view('alerta/mensagem_view', $data);
            }
            else
            {
                redirect(base_url().'index.php/usuario/timelineVisitanteView/' . $idUsuario, 'refresh');
            }
	}
    }
    
    public function editarPrivacidade()
    {
        $idUsuario  = intval($this->session->userdata('idUsuario'));
        
        $data['title']      = 'Hintweek :: Privacidade';
        $data['heading']    = 'Privacidade e Mensagens';
        
        $this->load->view('usuario/usuario_editar_privacidade_view', $data);
    }

    function delete_avatar()
    {
        $idUsuario = intval($this->session->userdata('idUsuario'));

        $avatar = array('avatar' => NULL);
        $this->db->update('usuario', $avatar, array('idUsuario'=>$idUsuario));

        redirect(base_url().'index.php/usuario/editarPerfil', 'refresh');
    }
    
    public function seguir($idSeguido, $action)
    {
        if($action === "seguir")
        {
            $idSeguidor = intval($this->session->userdata('idUsuario'));
            $result     = $this->usuario_model->follow($idSeguidor, $idSeguido, $action);

            if($result === TRUE)
            {
                $imgDeixarSeguir = array('src' => 'img/remove.png', 'alt' => 'Deixar de Acompanhar', 'title' => 'Deixar de Acompanhar');
                
                $usuario                = $this->usuario_model->get_by_id($idSeguido);
                $data['usuario']        = $usuario[0];
                $data['action_seguir']  = "deixar_de_seguir";
                                
                $this->load->view("usuario/btn_seguir_view", $data);
            }
        }
        elseif("deixar_de_seguir")
        {
            $idSeguidor = intval($this->session->userdata('idUsuario'));
                
            $result = $this->usuario_model->follow($idSeguidor, $idSeguido, $action);

            if($result === TRUE)
            {
                $usuario                = $this->usuario_model->get_by_id($idSeguido);
                $data['usuario']        = $usuario[0];
                $data['action_seguir']  = "seguir";
                                
                $this->load->view("usuario/btn_seguir_view", $data);
            }
        }
    }
    
    public function dashboard()
    {
        $idUsuario  = intval($this->session->userdata('idUsuario'));
        $query = $this->usuario_model->get_all_following($idUsuario);
        
        if($query != false)
        {   
            foreach ($query['ids'] as $key => $row)
            {
                $id = $row->idSeguido;
                $user = $this->usuario_model->get_by_id($id);
                
                $data['usuarioSeguido'][$key] = array(
                                            'usuarioPerfil' => $user,
                                            'idsDicas'      => $this->dica_model->get_all_tips_for_user($user[0]->idUsuario)        
                );
                
                $idsDicas = element('idsDicas', $data['usuarioSeguido'][$key]) ;
                $count_dicas = $idsDicas;
                
                foreach($idsDicas as $keey => $idDica)
                {
                    $dica = $this->dica_model->get_by_id($idDica);
                    
                    $countLegal = $this->dica_model->count_legal($dica[0]->idDica, $idUsuario);
                    $countVou   = $this->dica_model->count_vou($dica[0]->idDica, $idUsuario);

                    if($countLegal != array()){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                    if($countVou   != array()){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                    
                    $data['usuarioSeguido'][$key]['dicas'][$keey] = array(
                                                                        'dica'      => $dica[0],
                                                                        'countLegal'=> $countLegal,
                                                                        'countVou'  => $countVou,
                                                                        'tempo'     => timespan($dica[0]->create_time, now())
                                                                         );
                }
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos = $this->seguidos($idUsuario);
        $seguidores = $this->seguidores($idUsuario);
        
        $data['SESSION'] = FALSE;
        $data['usuario_logado'] = $this->usuario_model->get_by_id($idUsuario);
        if($data['usuario_logado'][0])
        {
            $data['SESSION'] = TRUE;
        }
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']                = $this->usuario_model->get_by_id($idUsuario);
        $data['title']                  = 'Hintweek :: Perfil de ' . $data['usuario'][0]->username;
        $data['heading']                = 'Novidades';
        $data['style']                  = 'dashboard';
        $data['usuario_logado']         = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));

        $this->load->view('usuario/head_view', $data);
        $this->load->view('usuario/Dashboard_view', $data);
        $this->load->view('usuario/footer_view');
    }
    
    public function timeline()
    {
        $idUsuario  = intval($this->session->userdata('idUsuario'));
        $query = $this->usuario_model->get_all_following($idUsuario);
        
        if($query != false)
        {   
            foreach ($query['ids'] as $key => $row)
            {
                $id = $row->idSeguido;
                $user = $this->usuario_model->get_by_id($id);
                
                $data['usuarioSeguido'][$key] = array(
                                            'usuarioPerfil' => $user,
                                            'idsDicas'      => $this->dica_model->get_all_tips_for_user($user[0]->idUsuario)        
                );
                
                $idsDicas = element('idsDicas', $data['usuarioSeguido'][$key]) ;
                $count_dicas = $idsDicas;
                
                foreach($idsDicas as $keey => $idDica)
                {
                    $dica = $this->dica_model->get_by_id($idDica);
                    
                    $countLegal = $this->dica_model->count_legal($dica[0]->idDica, $idUsuario);
                    $countVou   = $this->dica_model->count_vou($dica[0]->idDica, $idUsuario);

                    if($countLegal != array()){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                    if($countVou   != array()){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                    
                    $data['usuarioSeguido'][$key]['dicas'][$keey] = array(
                                                                        'dica'      => $dica[0],
                                                                        'countLegal'=> $countLegal,
                                                                        'countVou'  => $countVou,
                                                                        'tempo'     => timespan($dica[0]->create_time, now())
                                                                         );
                }
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos = $this->seguidos($idUsuario);
        $seguidores = $this->seguidores($idUsuario);
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']                = $this->usuario_model->get_by_id($idUsuario);
        $data['title']                  = 'Hintweek :: Perfil de ' . $data['usuario'][0]->username;
        $data['heading']                = 'Novidades';
        $data['style']                  = 'dashboard';
        $data['usuario_logado']          = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));

        $this->load->view('usuario/Timeline_view', $data);
    }
    
    public function tips()
    {
       $idUsuario   = $this->session->userdata('idUsuario'); 
       $dicas       = $this->dica_model->get_all_tips_for_user($idUsuario);
       
       if($dicas != NULL)
       {
           foreach($dicas as $key => $row)// Verifica dados de dicas do usuario
           {
               $countLegal = $this->dica_model->count_legal($row, $idUsuario);
               $countVou   = $this->dica_model->count_vou($row, $idUsuario);

               if($countLegal  != 0 || $countLegal == '+'){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
               if($countVou    != 0 || $countVou == '+'){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
               
               $data['dicas'][$key]             = $this->dica_model->get_by_id($row);
               $data['dicas'][$key]['tempo']    = timespan($data['dicas'][$key][0]->create_time, now());
               $data['dicas'][$key]['countLegal']              = $countLegal;
               $data['dicas'][$key]['countVou']                = $countVou;
           }
       }
       else
       {
           $data['dicas']['print'] = 'Ele ainda não cadastrou nenhuma dica.';
       }
       
       $seguidos = $this->seguidos($idUsuario);
       $seguidores = $this->seguidores($idUsuario);
        
       $data['seguidos']['info']       = $seguidos['user'];
       $data['seguidores']['info']     = $seguidores['user'];
       $data['seguidos']['count']      = $seguidos['count'];
       $data['seguidores']['count']    = $seguidores['count'];
       $data['usuario']     = $this->usuario_model->get_by_id($idUsuario);
       $data['title']       = 'Hintweek :: Perfil de ' . $data['usuario'][0]->username;
       $data['heading']                = 'Dicas';
       $data['style']                  = 'dashboard';
       $data['usuario_logado']         = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));
       
       $this->load->view('usuario/Tips_view', $data);
    }
    
    public function cool()
    {
        $idUsuario  = intval($this->session->userdata('idUsuario'));
        $query      = $this->dica_model->lista_Legais($idUsuario);
        if($query != false)
        {   
            foreach ($query as $key => $row)
            {
                $dica   = $this->dica_model->get_by_id($row->Dica_idDica);               
                $user   = $this->usuario_model->get_by_id($row->idDono_dica);
                
                $countLegal = $this->dica_model->count_legal($row->Dica_idDica, $idUsuario);
                $countVou   = $this->dica_model->count_vou($row->Dica_idDica, $idUsuario);
                
                if($countLegal  != 0 || $countLegal == '+'){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                if($countVou    != 0 || $countVou == '+'){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                
                $data['legais'][$key] = array(
                                            'usuario' => $user[0],
                                            'dica'    => $dica[0],
                                            'tempo'   => timespan($dica[0]->create_time, now()),
                                            'countLegal' => $countLegal,
                                            'countVou'  => $countVou
                );
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos = $this->seguidos($idUsuario);
        $seguidores = $this->seguidores($idUsuario);
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']     = $this->usuario_model->get_by_id($idUsuario);
        $data['title']       = 'HintWeek :: ' . $data['usuario'][0]->username;
        $data['heading']                = 'Legal';
        $data['style']                  = 'dashboard';
        $data['usuario_logado']         = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));
        
        $this->load->view('usuario/Cool_view', $data);
    }
    
    public function go()
    {
        $idUsuario  = intval($this->session->userdata('idUsuario'));
        $query      = $this->dica_model->lista_Vou($idUsuario);
        
        if($query != false)
        {   
            foreach ($query as $key => $row)
            {
                $dica   = $this->dica_model->get_by_id($row->Dica_idDica);               
                $user   = $this->usuario_model->get_by_id($row->idDono_dica);
                
                $countLegal = $this->dica_model->count_legal($row->Dica_idDica, $idUsuario);
                $countVou   = $this->dica_model->count_vou($row->Dica_idDica, $idUsuario);
                
                if($countLegal  != 0 || $countLegal == '+'){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                if($countVou    != 0 || $countVou == '+'){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                
                $data['legais'][$key] = array(
                                            'usuario' => $user[0],
                                            'dica'    => $dica[0],
                                            'tempo'   => timespan($dica[0]->create_time, now()),
                                            'countLegal' => $countLegal,
                                            'countVou'  => $countVou
                );
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos = $this->seguidos($idUsuario);
        $seguidores = $this->seguidores($idUsuario);
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']     = $this->usuario_model->get_by_id($idUsuario);
        $data['title']                  = 'HintWeek :: ' . $data['usuario'][0]->username;
        $data['heading']                = 'Eu Vou!';
        $data['style']                  = 'dashboard';
        $data['usuario_logado']          = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));
        
        $this->load->view('usuario/go_view', $data);
    }
    
    public function profile($idUsuario)
    {
        $query = $this->usuario_model->get_all_following($idUsuario);
        
        if($query != false)
        {   
            foreach ($query['ids'] as $key => $row)
            {
                $id = $row->idSeguido;
                $user = $this->usuario_model->get_by_id($id);
                
                $data['usuarioSeguido'][$key] = array(
                                            'usuarioPerfil' => $user,
                                            'idsDicas'      => $this->dica_model->get_all_tips_for_user($user[0]->idUsuario)        
                );
                
                $idsDicas = element('idsDicas', $data['usuarioSeguido'][$key]) ;
                $count_dicas = $idsDicas;
                
                foreach($idsDicas as $keey => $idDica)
                {
                    $dica = $this->dica_model->get_by_id($idDica);
                    
                    $countLegal = $this->dica_model->count_legal($dica[0]->idDica, $idUsuario);
                    $countVou   = $this->dica_model->count_vou($dica[0]->idDica, $idUsuario);

                    if($countLegal != array()){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                    if($countVou   != array()){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                    
                    $data['usuarioSeguido'][$key]['dicas'][$keey] = array(
                                                                        'dica'      => $dica[0],
                                                                        'countLegal'=> $countLegal,
                                                                        'countVou'  => $countVou,
                                                                        'tempo'     => timespan($dica[0]->create_time, now())
                                                                         );
                }
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos       = $this->seguidos($idUsuario);
        $seguidores     = $this->seguidores($idUsuario);
        
        $usuario_logado = $this->session->userdata('idUsuario');
        $segue          = $this->usuario_model->valida_seguidor($usuario_logado, $idUsuario);
        $action_seguir  = "seguir";
        if($segue === TRUE)
        {
            $action_seguir = "deixar_de_seguir";
        }
        
        $data['SESSION'] = FALSE;
        $data['usuario_logado'] = $this->usuario_model->get_by_id($usuario_logado);
        if($data['usuario_logado'][0])
        {
            $data['SESSION'] = TRUE;
        }
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']                = $this->usuario_model->get_by_id($idUsuario);
        $data['title']                  = 'Hintweek :: Perfil de ' . $data['usuario'][0]->username;
        $data['heading']                = 'Novidades';
        $data['style']                  = 'profile';
        $data['action_seguir']          = $action_seguir;
        
        
        if($data['usuario'][0]->Cidade_idCidade != 0)
        {
            $data['cidade']     = $this->cidade_model->get_by_id($data['usuario'][0]->Cidade_idCidade != 0);
            $data['estado']     = $this->estado_model->get_by_id($data['cidade']->Estado_idEstado);
        }
        
        $this->load->view('usuario/head_view', $data);
        $this->load->view('usuario/profile_view', $data);    
        $this->load->view('usuario/footer_view');
    }
    
    public function timeline_visiter($idUsuario)
    {
        $query = $this->usuario_model->get_all_following($idUsuario);
        
        if($query != false)
        {   
            foreach ($query['ids'] as $key => $row)
            {
                $id = $row->idSeguido;
                $user = $this->usuario_model->get_by_id($id);
                
                $data['usuarioSeguido'][$key] = array(
                                            'usuarioPerfil' => $user,
                                            'idsDicas'      => $this->dica_model->get_all_tips_for_user($user[0]->idUsuario)        
                );
                
                $idsDicas = element('idsDicas', $data['usuarioSeguido'][$key]) ;
                $count_dicas = $idsDicas;
                
                foreach($idsDicas as $keey => $idDica)
                {
                    $dica = $this->dica_model->get_by_id($idDica);
                    
                    $countLegal = $this->dica_model->count_legal($dica[0]->idDica, $idUsuario);
                    $countVou   = $this->dica_model->count_vou($dica[0]->idDica, $idUsuario);

                    if($countLegal != array()){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                    if($countVou   != array()){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                    
                    $data['usuarioSeguido'][$key]['dicas'][$keey] = array(
                                                                        'dica'      => $dica[0],
                                                                        'countLegal'=> $countLegal,
                                                                        'countVou'  => $countVou,
                                                                        'tempo'     => timespan($dica[0]->create_time, now())
                                                                         );
                }
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos = $this->seguidos($idUsuario);
        $seguidores = $this->seguidores($idUsuario);
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']                = $this->usuario_model->get_by_id($idUsuario);
        $data['title']                  = 'Hintweek :: Perfil de ' . $data['usuario'][0]->username;
        $data['style']                  = 'dashboard';
        $data['heading']                = 'Novidades';
        $data['usuario_logado']         = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));

        $this->load->view('usuario/Timeline_view', $data);
    }
    
    public function tips_visiter($idUsuario)
    {
       $dicas       = $this->dica_model->get_all_tips_for_user($idUsuario);
       
       if($dicas != NULL)
       {
           foreach($dicas as $key => $row)// Verifica dados de dicas do usuario
           {
               $countLegal = $this->dica_model->count_legal($row, $idUsuario);
               $countVou   = $this->dica_model->count_vou($row, $idUsuario);

               if($countLegal  != 0 || $countLegal == '+'){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
               if($countVou    != 0 || $countVou == '+'){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
               
               $data['dicas'][$key]             = $this->dica_model->get_by_id($row);
               $data['dicas'][$key]['tempo']    = timespan($data['dicas'][$key][0]->create_time, now());
               $data['dicas'][$key]['countLegal']              = $countLegal;
               $data['dicas'][$key]['countVou']                = $countVou;
           }
       }
       else
       {
           $data['dicas']['print'] = 'Ele ainda não cadastrou nenhuma dica.';
       }
       
       $seguidos = $this->seguidos($idUsuario);
       $seguidores = $this->seguidores($idUsuario);
        
       $data['seguidos']['info']       = $seguidos['user'];
       $data['seguidores']['info']     = $seguidores['user'];
       $data['seguidos']['count']      = $seguidos['count'];
       $data['seguidores']['count']    = $seguidores['count'];
       $data['usuario']     = $this->usuario_model->get_by_id($idUsuario);
       $data['title']       = 'Hintweek :: Perfil de ' . $data['usuario'][0]->username;
       $data['style']                  = 'dashboard';
       $data['heading']                = 'Dicas';
       $data['usuario_logado']          = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));
       
       $this->load->view('usuario/Tips_view', $data);
    }
    
    public function cool_visiter($idUsuario)
    {
        $query      = $this->dica_model->lista_Legais($idUsuario);
        if($query != false)
        {   
            foreach ($query as $key => $row)
            {
                $dica   = $this->dica_model->get_by_id($row->Dica_idDica);               
                $user   = $this->usuario_model->get_by_id($row->idDono_dica);
                
                $countLegal = $this->dica_model->count_legal($row->Dica_idDica, $idUsuario);
                $countVou   = $this->dica_model->count_vou($row->Dica_idDica, $idUsuario);
                
                if($countLegal  != 0 || $countLegal == '+'){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                if($countVou    != 0 || $countVou == '+'){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                
                $data['legais'][$key] = array(
                                            'usuario' => $user[0],
                                            'dica'    => $dica[0],
                                            'tempo'   => timespan($dica[0]->create_time, now()),
                                            'countLegal' => $countLegal,
                                            'countVou'  => $countVou
                );
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos = $this->seguidos($idUsuario);
        $seguidores = $this->seguidores($idUsuario);
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']     = $this->usuario_model->get_by_id($idUsuario);
        $data['title']       = 'HintWeek :: ' . $data['usuario'][0]->username;
        $data['style']                  = 'dashboard';
        $data['heading']                = 'Legal';
        $data['usuario_logado']          = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));
        
        $this->load->view('usuario/Cool_view', $data);
    }
    
    public function go_visiter($idUsuario)
    {
        $query      = $this->dica_model->lista_Vou($idUsuario);
        
        if($query != false)
        {   
            foreach ($query as $key => $row)
            {
                $dica   = $this->dica_model->get_by_id($row->Dica_idDica);               
                $user   = $this->usuario_model->get_by_id($row->idDono_dica);
                
                $countLegal = $this->dica_model->count_legal($row->Dica_idDica, $idUsuario);
                $countVou   = $this->dica_model->count_vou($row->Dica_idDica, $idUsuario);
                
                if($countLegal  != 0 || $countLegal == '+'){  $countLegal = 'Legal (' . $countLegal . ')'; }else{ $countLegal = 'Legal';  }
                if($countVou    != 0 || $countVou == '+'){  $countVou = 'Eu Vou (' . $countVou . ')';    }else{ $countVou   = 'Eu Vou';   }
                
                $data['legais'][$key] = array(
                                            'usuario' => $user[0],
                                            'dica'    => $dica[0],
                                            'tempo'   => timespan($dica[0]->create_time, now()),
                                            'countLegal' => $countLegal,
                                            'countVou'  => $countVou
                );
            }
        }
        else
        {
            $data['print'] = "Nao possui dicas";
        }
        
        $seguidos = $this->seguidos($idUsuario);
        $seguidores = $this->seguidores($idUsuario);
        
        $data['seguidos']['info']       = $seguidos['user'];
        $data['seguidores']['info']     = $seguidores['user'];
        $data['seguidos']['count']      = $seguidos['count'];
        $data['seguidores']['count']    = $seguidores['count'];
        $data['usuario']     = $this->usuario_model->get_by_id($idUsuario);
        $data['title']                  = 'HintWeek :: ' . $data['usuario'][0]->username;
        $data['style']                  = 'dashboard';
        $data['heading']                = 'Eu Vou!';
        $data['usuario_logado']          = $this->usuario_model->get_by_id($this->session->userdata('idUsuario'));
        
        $this->load->view('usuario/go_view', $data);
    }
    
    public function listaSeguidores()
    {
        $idUsuario = intval($this->session->userdata('idUsuario'));
        
        $query = $this->usuario_model->get_all_followers($idUsuario);
        foreach ($query as $key => $row)
        {
            $data['usuarios'][$key]             = $this->usuario_model->get_by_id($row->Usuario_idUsuario);
            $data['usuarios'][$key]['cidade']   = $this->cidade_model->get_by_id($data['usuarios'][$key][0]->Cidade_idCidade);
            $data['usuarios'][$key]['estado']   = $this->estado_model->get_by_id($data['usuarios'][$key]['cidade']->Estado_idEstado);
        }
        
        $data['title']      = 'HintWeek :: Seguidores';
        $data['heading']    = 'Usuários que seguem você';
            
        $this->load->view('usuario/usuario_list_followers_view', $data);
    }
    
    public function listaSeguidos()
    {
        $idUsuario = intval($this->session->userdata('idUsuario'));
        
        $query = $this->usuario_model->get_all_following($idUsuario);
        
        foreach ($query as $key => $row)
        {
            $data['usuarios'][$key]             = $this->usuario_model->get_by_id($row->usuario_seguido);
            $data['usuarios'][$key]['cidade']   = $this->cidade_model->get_by_id($data['usuarios'][$key][0]->Cidade_idCidade);
            $data['usuarios'][$key]['estado']   = $this->estado_model->get_by_id($data['usuarios'][$key]['cidade']->Estado_idEstado);
        }
        
        $data['title']      = 'Hintweek :: Seguidos';
        $data['heading']    = 'Usuários que você segue';
            
        $this->load->view('usuario/usuario_list_following_view', $data);
    }
    
    public function deletarConta()
    {
        $idUsuario = intval($this->session->userdata('idUsuario'));
        
        $config = array(
                   array(
                         'field'   => 'senha',
                         'label'   => 'Senha',
                         'rules'   => 'required'
                      ),
                   array(
                         'field'   => 'confirma',
                         'label'   => 'Confirmar',
                         'rules'   => 'required'
                      )                      
                );

        //  Load form_help //
        $this->load->library('form_validation');
        $this->form_validation->set_rules($config);
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
        
        
        if ($this->form_validation->run() == FALSE)
	{
            $data['title']      = 'Hintweek :: Deletar Conta';
            $data['heading']    = 'Deletar Conta';
            $data['mensagem']   = 'Caso não ache mais necessario continuar no hintweek, clique no botão abaixo para encerrar definitivamente sua conta, mais cuidado, após a confirmação, todos os seus dados.';
                
            $this->load->view('usuario/usuario_deletar_conta_view', $data);
	}
	else
	{
            if($this->input->post('confirma'))
            {
                $senha = get_object_vars($this->usuario_model->busca_senha($idUsuario));
                if($senha['senha'] == $this->input->post('senha'))
                {
                    
                    $this->usuario_model->delete($idUsuario);
                    
                    $data['title']      = 'Hintweek :: Conta Deletada';
                    $data['heading']    = 'Conta excluida com sucesso';
                    $data['mensagem']   = 'Esperamos que possamos ter você conosco novamente muito em breve!';
                    
                    $this->load->view('alerta/mensagem_view', $data);
                }
            }
        }   
    }
    
    function username_check($username)
    {
        $username = $this->usuario_model->busca_username($username);
        
        if($username == TRUE)
        {
            $this->form_validation->set_message('username_check', 'Este %s já esta em uso, tente outro.');
            return FALSE;
        }
        else
        {
            return TRUE;
        }    
    }
    
    function username_edit_check($username)
    {
        $username = $this->usuario_model->busca_username($username);
        $idUsuario = $this->session->userdata('idUsuario');
        
        if($username != FALSE && $username->idUsuario != $idUsuario)
        {
            $this->form_validation->set_message('username_edit_check', 'Este %s já esta em uso, tente outro.');
            return FALSE;
        }
        else
        {
            return TRUE;
        }    
    }
    
    function email_check($email)
    {
        $email  = $this->usuario_model->busca_email($email);
        
        if($email == TRUE)
        {
            $this->form_validation->set_message('email_check', 'Este %s já esta em uso, tente outro.');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
    
    function email_edit_check($email)
    {
        $email  = $this->usuario_model->busca_email($email);
        $idUsuario = $this->session->userdata('idUsuario');
                
        if($email == TRUE && $email->idUsuario != $idUsuario)
        {
            $this->form_validation->set_message('email_edit_check', 'Este %s já esta em uso, tente outro.');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
    function pass_validation_check($senha)
    {
        $senha = $this->usuario_model->busca_senha($this->session->userdata('idUsuario'));
        $pass = addslashes($this->input->post('senha'));
        $pass = $this->encrypt->sha1($pass);
        
        if( $senha->senha != $pass)
        {
            $this->form_validation->set_message('pass_validation_check', '%s esta incorreta, tente novamente.');
            return FALSE;                
        }
        else
        {
            return TRUE;
        }
    }
    
    public function seguidos($idUsuario)
    {
        $lista_seguidos = $this->usuario_model->get_all_following($idUsuario);
        $seguidos       = array();
        foreach($lista_seguidos['ids'] as $key => $row)
        { 
            $seguidos[$key] = $this->usuario_model->get_avatar_by_id($row->idSeguido);
        }
        
        $data['user'] = $seguidos;
        $data['count']= $lista_seguidos['count'];
        
        return $data;
    }
    
    public function seguidores($idUsuario)
    {
        $lista_seguidores = $this->usuario_model->get_all_followers($idUsuario);
        $seguidores       = array();
        foreach($lista_seguidores['ids'] as $key => $row)
        { 
            $seguidores[$key] = $this->usuario_model->get_avatar_by_id($row->idSeguidor); 
        }
        
        $data['user'] = $seguidores;
        $data['count']= $lista_seguidores['count'];
        
        return $data;
    }
}



/* End of file usuario.php */
/* Location: ./application/controller/usuario.php */
